/**
 * @file Flash.h
 * @author SoBigDog (623644973lubin@163.com)
 * @brief 
 * @version 0.1
 * @date 2020-09-27
 * 
 * @copyright Copyright (c) 2020
 * 
 */
#ifndef _FLASH_H_
#define _FLASH_H_

#include "stm32f1xx_hal.h"
#include <stdbool.h>

struct flash_area {
	uint32_t m_addr;	/* flash 块起始地址 */
	uint32_t m_size;	/* flash 块大小，在stm32f103t8u6中最小单位是1K */
};

/**
 * @brief 
 * 
 * @param pFlash 
 * @return true 
 * @return false 
 */
bool FlashInit(struct flash_area * pFlash);

/**
 * @brief 
 * 
 * @param pFlash 指向被操作的Flash
 * @param offset 读取的起始地址相对于
 * @param buff 
 * @return true 地址可以被访问，并且
 * @return false 
 */
bool flash_read(struct flash_area * pFlash, uint16_t offset, uint32_t len, uint8_t * buff);

/**
 * @brief 
 * 
 * @param pFlash 
 * @return true 
 * @return false 
 */
bool flash_write(struct flash_area * pFlash, uint16_t offset, uint8_t *, uint32_t);

#endif
